Add xrealloc, xstrappend.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 22 Jan 2003 03:12:46 +0000 (03:12 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 22 Jan 2003 03:12:46 +0000 (03:12 +0000)
Fix typo in be_read16.

gpsbabel/defs.h
gpsbabel/util.c

index f836cec31f740c69875d39d4705866ae9f1581b4..1c9fe09d085216cef67cffbdedba53993c78c04a 100644 (file)
@@ -217,6 +217,8 @@ void printposn(const coord *c, int is_lat);
 void *xcalloc(size_t nmemb, size_t size);
 void *xmalloc(size_t size);
 char *xstrdup(const char *s);
+char *xstrappend(char *src, const char *new);
+
 void rtrim(char *s);
 signed int get_tz_offset(void);
 
index 3e64373c898870ddf0b38b84d9c4c9b2add8fb86..2ea444037e7299c5b6d031b212af3108b8aee433 100644 (file)
@@ -60,6 +60,39 @@ xstrdup(const char *s)
        return o;
 }
 
+void *
+xrealloc(void *p, size_t s)
+{
+       char *o = realloc(p,s);
+
+       if (!o) {
+               fatal("gpsbabel: Unable to realloc %d bytes of memory.\n", s);
+                       }
+
+       return o;
+}
+
+/*
+* For an allocated string, realloc it and append 's'
+*/
+char *
+xstrappend(char *src, const char *new)
+{
+       size_t newsz;
+
+       if (!src) {
+               return(xstrdup(new));
+       }
+
+       newsz = strlen(src) + strlen(new) + 1;
+       src = xrealloc(src, newsz);
+       strcat(src, new);
+
+       return src;
+}
+
+
+
 void 
 rtrim(char *s)
 {
@@ -129,8 +162,8 @@ be_read32(void *p)
 signed int
 be_read16(void *p)
 {
-       char *i = (char *) p;
-       return i[0] << 8 | i[0];
+       unsigned char *i = (unsigned char *) p;
+       return i[0] << 8 | i[1];
 }
 
 void